﻿namespace BridgeShips
{
    /// <summary>
    /// 属性类型
    /// </summary>
    public enum EntityAttributeType : int
    {
        //final = (((base + add) * (1 + pct)) + finalAdd) * (1 + finalPct);
        //血量
        HP = 1,
        //物理护盾
        PhysicShield = 2,
        //魔法护盾
        MagicShield = 3,
        //通用护盾
        Shield = 4,
        //法力值
        MP = 5,
        //能量
        Energy = 6,
        //最大血量
        MaxHP = 7,
        MaxHPBase = MaxHP * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxHPAdd = MaxHP * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxHPPct = MaxHP * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxHPFinalAdd = MaxHP * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxHPFinalPct = MaxHP * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大法力值
        MaxMP = 8,
        MaxMPBase = MaxMP * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxMPAdd = MaxMP * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxMPPct = MaxMP * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxMPFinalAdd = MaxMP * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxMPFinalPct = MaxMP * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大能量值
        MaxEnergy = 9,
        MaxEnergyBase = MaxEnergy * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxEnergyAdd = MaxEnergy * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxEnergyPct = MaxEnergy * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxEnergyFinalAdd = MaxEnergy * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxEnergyFinalPct = MaxEnergy * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //攻击力
        Attack = 10,
        AttackBase = Attack * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        AttackAdd = Attack * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        AttackPc = Attack * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        AttackFinalAdd = Attack * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        AttackFinalPct = Attack * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大攻击力
        MaxAttack = 11,
        MaxAttackBase = MaxAttack * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxAttackAdd = MaxAttack * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxAttackPct = MaxAttack * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxAttackFinalAdd = MaxAttack * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxAttackFinalPct = MaxAttack * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //法术强度
        MagicAttack = 12,
        MagicAttackBase = MagicAttack * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MagicAttackAdd = MagicAttack * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MagicAttackPct = MagicAttack * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MagicAttackFinalAdd = MagicAttack * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MagicAttackFinalPct = MagicAttack * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大法术强度
        MaxMagicAttack = 13,
        MaxMagicAttackBase = MaxMagicAttack * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxMagicAttackAdd = MaxMagicAttack * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxMagicAttackPct = MaxMagicAttack * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxMagicAttackFinalAdd = MaxMagicAttack * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxMagicAttackFinalPct = MaxMagicAttack * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //攻击速度
        AttackSpeed = 14,
        AttackSpeedBase = AttackSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        AttackSpeedAdd = AttackSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        AttackSpeedPct = AttackSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        AttackSpeedFinalAdd = AttackSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        AttackSpeedFinalPct = AttackSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大攻击速度
        MaxAttackSpeed = 15,
        MaxAttackSpeedBase = MaxAttackSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxAttackSpeedAdd = MaxAttackSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxAttackSpeedPct = MaxAttackSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxAttackSpeedFinalAdd = MaxAttackSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxAttackSpeedFinalPct = MaxAttackSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //移动速度
        MoveSpeed = 16,
        MoveSpeedBase = MoveSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MoveSpeedAdd = MoveSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MoveSpeedPct = MoveSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MoveSpeedFinalAdd = MoveSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MoveSpeedFinalPct = MoveSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大移动速度
        MaxMoveSpeed = 17,
        MaxMoveSpeedBase = MaxMoveSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxMoveSpeedAdd = MaxMoveSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxMoveSpeedPct = MaxMoveSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxMoveSpeedFinalAdd = MaxMoveSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxMoveSpeedFinalPct = MaxMoveSpeed * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //物理防御
        Defend = 18,
        DefendBase = Defend * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        DefendAdd = Defend * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        DefendPct = Defend * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        DefendFinalAdd = Defend * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        DefendFinalPct = Defend * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大物理抗性
        MaxDefend = 19,
        MaxDefendBase = MaxDefend * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxDefendAdd = MaxDefend * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxDefendPct = MaxDefend * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxDefendFinalAdd = MaxDefend * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxDefendFinalPct = MaxDefend * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //魔抗
        MagicDefend = 20,
        MagicDefendBase = MagicDefend * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MagicDefendAdd = MagicDefend * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MagicDefendPct = MagicDefend * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MagicDefendFinalAdd = MagicDefend * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MagicDefendFinalPct = MagicDefend * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大魔法抗性
        MaxMagicDefend = 21,
        MaxMagicDefendBase = MaxMagicDefend * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxMagicDefendAdd = MaxMagicDefend * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxMagicDefendPct = MaxMagicDefend * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxMagicDefendFinalAdd = MaxMagicDefend * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxMagicDefendFinalPct = MaxMagicDefend * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //CD
        CD = 22,
        CDBase = CD * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        CDAdd = CD * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        CDPct = CD * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        CDFinalAdd = CD * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        CDFinalPct = CD * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大CD
        MaxCD = 23,
        MaxCDBase = MaxCD * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxCDAdd = MaxCD * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxCDPct = MaxCD * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxCDFinalAdd = MaxCD * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxCDFinalPct = MaxCD * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //血量恢复
        HPRecover = 24,
        HPRecoverBase = HPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        HPRecoverAdd = HPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        HPRecoverPct = HPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        HPRecoverFinalAdd = HPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        HPRecoverFinalPct = HPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大血量恢复速度
        MaxHPRecover = 25,
        MaxHPRecoverBase = MaxHPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxHPRecoverAdd = MaxHPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxHPRecoverPct = MaxHPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxHPRecoverFinalAdd = MaxHPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxHPRecoverFinalPct = MaxHPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //魔法恢复
        MPRecover = 26,
        MPRecoverBase = MPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MPRecoverAdd = MPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MPRecoverPct = MPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MPRecoverFinalAdd = MPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MPRecoverFinalPct = MPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大魔法恢复速度
        MaxMPRecover = 27,
        MaxMPRecoverBase = MaxMPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxMPRecoverAdd = MaxMPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxMPRecoverPct = MaxMPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxMPRecoverFinalAdd = MaxMPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxMPRecoverFinalPct = MaxMPRecover * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //暴击几率
        Crit = 28,
        CritBase = Crit * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        CritAdd = Crit * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        CritPct = Crit * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        CritFinalAdd = Crit * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        CritFinalPct = Crit * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大暴击几率
        MaxCrit = 29,
        MaxCritBase = MaxCrit * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxCritAdd = MaxCrit * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxCritPct = MaxCrit * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxCritFinalAdd = MaxCrit * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxCritFinalPct = MaxCrit * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //吸血
        SuckHP = 30,
        SuckHPBase = SuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        SuckHPAdd = SuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        SuckHPPct = SuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        SuckHPFinalAdd = SuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        SuckHPFinalPct = SuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大吸血
        MaxSuckHP = 31,
        MaxSuckHPBase = MaxSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxSuckHPAdd = MaxSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxSuckHPPct = MaxSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxSuckHPFinalAdd = MaxSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxSuckHPFinalPct = MaxSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //法术吸血
        MagicSuckHP = 32,
        MagicSuckHPBase = MagicSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MagicSuckHPAdd = MagicSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MagicSuckHPPct = MagicSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MagicSuckHPFinalAdd = MagicSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MagicSuckHPFinalPct = MagicSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大法术吸血
        MaxMagicSuckHP = 33,
        MaxMagicSuckHPBase = MaxMagicSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxMagicSuckHPAdd = MaxMagicSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxMagicSuckHPPct = MaxMagicSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxMagicSuckHPFinalAdd = MaxMagicSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxMagicSuckHPFinalPct = MaxMagicSuckHP * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //物理穿透
        PhysicPen = 34,
        PhysicPenBase = PhysicPen * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        PhysicPenAdd = PhysicPen * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        PhysicPenPct = PhysicPen * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        PhysicPenFinalAdd = PhysicPen * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        PhysicPenFinalPct = PhysicPen * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大物理穿透
        MaxPhysicPen = 35,
        MaxPhysicPenBase = MaxPhysicPen * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxPhysicPenAdd = MaxPhysicPen * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxPhysicPenPct = MaxPhysicPen * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxPhysicPenFinalAdd = MaxPhysicPen * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxPhysicPenFinalPct = MaxPhysicPen * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //魔法穿透
        MagicPen = 36,
        MagicPenBase = MagicPen * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MagicPenAdd = MagicPen * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MagicPenPct = MagicPen * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MagicPenFinalAdd = MagicPen * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MagicPenFinalPct = MagicPen * EntityStatus.ATTRIBUTE_INTERVAL + 5,
        //最大魔法穿透
        MaxMagicPen = 37,
        MaxMagicPenBase = MaxMagicPen * EntityStatus.ATTRIBUTE_INTERVAL + 1,
        MaxMagicPenAdd = MaxMagicPen * EntityStatus.ATTRIBUTE_INTERVAL + 2,
        MaxMagicPenPct = MaxMagicPen * EntityStatus.ATTRIBUTE_INTERVAL + 3,
        MaxMagicPenFinalAdd = MaxMagicPen * EntityStatus.ATTRIBUTE_INTERVAL + 4,
        MaxMagicPenFinalPct = MaxMagicPen * EntityStatus.ATTRIBUTE_INTERVAL + 5,
    }
}
